package com.hoe.tsb.web.bean;

import lombok.Data;

import java.io.Serializable;

/**
 * <p>
 * Api返回的基类
 * </p>
 *
 * @author hoe
 * @version 1.0
 * @date 2022/11/24 13:39
 */
@Data
public class R<T> implements Serializable {

    /**
     * Api响应的code<br/>
     * 简单声明响应code：0表示成功，其他表示失败
     */
    private int code = 0;

    /**
     * Api响应错误时的msg
     */
    private String msg;

    /**
     * 响应数据
     */
    private T data;

    /**
     * 构建Api的失败响应
     * @param msg 失败的提示信息
     * @return 失败响应实体
     */
    public static R<String> fail(String msg) {
        return fail(1, msg);
    }

    /**
     * 构建Api的失败响应
     * @param code 失败code
     * @param msg 失败的提示信息
     * @return 失败响应实体
     */
    public static R<String> fail(int code, String msg) {
        R<String> r = new R<>();
        r.code = code;
        r.msg = msg;
        return r;
    }

    /**
     * 构建Api的成功空响应
     * @return 成功响应实体
     */
    public static R<String> successEmpty() {
        R<String> r = new R<>();
        r.msg = "成功";
        return r;
    }

    /**
     * 构建Api的成功含data响应
     * @param o 响应数据
     * @param <O> 响应数据泛型
     * @return 成功响应实体
     */
    public static <O> R<O> success(O o) {
        R<O> r = new R<>();
        r.msg = "成功";
        r.data = o;
        return r;
    }

}
